//国密sm4加密解密
/* eslint-disable no-unused-vars */
import  SM4_GM  from 'gm-crypt'
import common from '/@/common/common'

interface BaseType{
    encrypt(text: string, key?: string): string
    decrypt(text: string, key?: string): string
}

class SM4 implements BaseType{
    encrypt(text: string, key?: string): string {
        if(common.objectUnavailable(key)){
            key = 'HENG1AN2WEN3YIN4'
        }
        let sm4Config = {
            //配置sm4参数
            key: key,//这里这个key值是跟后端要的
            mode: 'ecb', // 加密的方式有两种，ecb和cbc两种，也是看后端如何定义的，不过要是cbc的话下面还要加一个iv的参数，ecb不用
            cipherType: 'base64'
        };
        let sm4 = SM4_GM.sm4
        sm4 = new sm4(sm4Config);//这里new一个函数，将上面的sm4Config作为参数传递进去。然后就可以开心的加密了
        return sm4.encrypt(text); //账号加密
    }

    decrypt(text: string, key?: string): string {
        if(common.objectUnavailable(key)){
            key = 'HENG1AN2WEN3YIN4'
        }
        let sm4Config = {
            //配置sm4参数
            key: key,//这里这个key值是跟后端要的
            mode: 'ecb', // 解密的方式有两种，ecb和cbc两种，也是看后端如何定义的，不过要是cbc的话下面还要加一个iv的参数，ecb不用
            cipherType: 'base64'
        };
        let sm4 = SM4_GM.sm4
        sm4 = new sm4(sm4Config);//这里new一个函数，将上面的sm4Config作为参数传递进去。然后就可以开心的加密了
        return sm4.decrypt(text); //账号解密
    }
}

const sm4 = new SM4()
export default sm4